package com.earnings.okhttputils.utils.car.http;

import android.util.Log;

/**
 * Created by Administrator on 2017/5/28 0028.
 */

public class GodLog {
    public static final boolean DE_BUG = true;

    public static void Log(String... ob) {
        if (DE_BUG) {
            for (int i = 0; i < ob.length; i++) {
                show(unicodeToUTF_8(ob[i]).replace("\\", "").replace(" ", ""));
            }
        }
    }

    public static void Log(int... ob) {
        if (DE_BUG) {
            for (int i = 0; i < ob.length; i++) {
                show(unicodeToUTF_8(ob[i] + "").replace("\\", "").replace(" ", ""));
            }
        }
    }

    public static void showSystemout(String tag, String msg) {
        if (DE_BUG) {
            System.out.println(tag + "=" + msg);
        }
    }

    public static void showSystemout(String tag, int msg) {
        if (DE_BUG) {
            System.out.println(tag + "=" + msg);
        }
    }

    public static void showSystemout(String tag, boolean msg) {
        if (DE_BUG) {
            System.out.println(tag + "=" + msg);
        }
    }

    public static String unicodeToUTF_8(String src) {
        if (null == src) {
            return null;
        }
        StringBuilder out = new StringBuilder();
        for (int i = 0; i < src.length(); ) {
            char c = src.charAt(i);
            if (i + 6 < src.length() && c == '\\' && src.charAt(i + 1) == 'u') {
                String hex = src.substring(i + 2, i + 6);
                try {
                    out.append((char) Integer.parseInt(hex, 16));
                } catch (NumberFormatException nfe) {
                    nfe.fillInStackTrace();
                }
                i = i + 6;
            } else {
                out.append(src.charAt(i));
                ++i;
            }
        }
        return out.toString();

    }

    //    发现从logcat中返回的信息中明显少了后面一节;
//
//    觉得有点奇怪,以为是代码上问题,找了一下,发现不是;
//
//    于是guge一下.原来logcat在实现上对于message的内存分配大概是4k左右.所以超过的内容都直接被丢弃;
//
//    不输出;
//
//    同时发现logcat对于"\n"换行符会自动当成是自动分隔成多条log输出的标志,但是,你Log.d(null,"有多个\n的超过4k长度的字符");
//
//    这样的信息,虽然会有多少个\n就产生多少条log,但是你传递给这个message的最多接受大概是4k,后面不要了;然后再按照\n的原则来切割的;
//
//
//    所以,考虑了一下,就自己写一个debug类来自己切分超过4k的message来使用多个log.d输出即可;
    public static void show(String str) {
        str = str.trim();
        int index = 0;
        int maxLength = 3000;
        String sub;
        while (index < str.length()) {
            // java的字符不允许指定超过总的长度end
            if (str.length() <= index + maxLength) {
                sub = str.substring(index);
            } else {
                sub = str.substring(index, maxLength);
            }
            index += maxLength;
            Log.e("God", sub.trim());
        }
    }


}
